package daoImpl;

import java.util.List;

import javax.persistence.EntityManager;

import modelo.Pista;
import modelo.Reserva;
import modelo.Usuario;
import dao.DAOGeneral;
import dao.IUsuarioDAO;

public class UsuarioDAOImpl extends DAOGeneral implements IUsuarioDAO {

	private EntityManager em;

	public UsuarioDAOImpl() {
		em = getEntityManager();
	}
	
	
	public void insertar(Usuario usu) {
		em.getTransaction().begin();
		em.persist(usu);
		em.getTransaction().commit();
	}

	public Usuario update(Usuario usu) {
		em.getTransaction().begin();
		Usuario usux = em.find(Usuario.class, usu.getDni());
		usux.setApellido1(usu.getApellido1());
		usux.setApellido2(usu.getApellido2());
		usux.setCp(usu.getCp());
		usux.setDireccion(usu.getDireccion());
		usux.setEmail(usu.getEmail());
		usux.setNombre(usu.getNombre());
		usux.setPoblacion(usu.getPoblacion());
		usux.setProvincia(usu.getProvincia());
		usux.setTelefono1(usu.getTelefono1());
		if(usu.getTelefono2()!=null)
		{
			usux.setTelefono2(usu.getTelefono2());
		}
		if(usu.getLogin()!=null)
		{
			usux.setLogin(usu.getLogin());
		}
		if(usu.getReservas()!=null)
		{
			usux.setReservas(usu.getReservas());
		}
		 em.getTransaction().commit();
		 return em.find(Usuario.class, usu.getDni());
	}

	public void borrar(Usuario usu) {
		em.remove(usu);
	}

	public Usuario seleccionarPorId(String dni) {
		return em.find(Usuario.class, dni);
	}
	
	@SuppressWarnings("unchecked")
	public List<Reserva> seleccionarReservasPorUsuario(String dni)
	{
		return (List<Reserva>)em.createNamedQuery("Reserva.seleccionarReservasPorUsuario").setParameter("dni", dni).getResultList();
	}
	@SuppressWarnings("unchecked")
	public List<Usuario> seleccionarTodosUsuarios()
	{
		return (List<Usuario>)em.createNamedQuery("Usuario.seleccionarTodosUsuarios").getResultList();
	}
}
